牌型大小:
五小牛 > 五花牛 > 炸弹 > 银牛 > 牛牛 > 有牛(牛987654321) > 没牛,K > Q > J ……2 > A, 黑桃♠️ > 红桃♥️ > 梅花♣️ > 方块♦️,同样的牌型比大小,同样的手牌比花色.
1 /**
2 * 在cocoscreator里导入为插件使用
3 * 插件不支持es6,注意需要按照es5规则写
4 */
5 "use strict";
6
7 /**
8 * 定义手牌类型(按照大小从小到大排序)
9 * @type {{TYPE_NONE: number, TYPE_NIU_1: number, TYPE_NIU_2: number,
10 * TYPE_NIU_3: number, TYPE_NIU_4: number, TYPE_NIU_5: number,
11 * TYPE_NIU_6: number, TYPE_NIU_7: number, TYPE_NIU_8: number,
12 * TYPE_NIU_9: number, TYPE_NIUNIU: number, TYPE_SILVER: number,
13 * TYPE_BOOM: number, TYPE_FLOWER: number, TYPE_FIVES: number}}
14 */
15 var HandsType = {
16 TYPE_NONE: 0, // 没牛, 任意三张牌的和都不是10的倍数
17 TYPE_NIU_1: 1, // 牛1
18 TYPE_NIU_2: 2,
19 TYPE_NIU_3: 3,
20 TYPE_NIU_4: 4,
21 TYPE_NIU_5: 5,
22 TYPE_NIU_6: 6,
23 TYPE_NIU_7: 7,
24 TYPE_NIU_8: 8,
25 TYPE_NIU_9: 9,
26 TYPE_NIUNIU: 10, // 牛牛, 任意3张和为10的倍数,剩余2张和也为10的倍数
27 TYPE_SILVER: 11, // 银牛, 五张全是10、J、Q、K
28 TYPE_BOOM: 12, // 炸弹, 四张点数相同
29 TYPE_FLOWER: 13, // 5花牛, 五张全是J、Q、K
30 TYPE_FIVES: 14 // 5小牛(5张加起来小于等于10)
31 };
32
33 /**
34 *
35 * @param p{Number} 1-13 (A-K)
36 * @param s{Number} 1-4 (1方块diamond、2梅花club、3红桃heart、4黑桃spade)
37 * @constructor
38 */
39 function CardObj(p, s) {
40 this.point = p; // 牌面点数
41
42 this.suit = s; // 牌面花色
43 }
44
45 /**
46 * 手牌类型返回对象
47 * @param type{Number} 手牌类型
48 * @param mCard{CardObj} 手里的最大牌
49 * @param ncards{Array} 组成牛的三张牌, 手牌分成两组方便展示
50 * @param pcards{Array} 决定点数的两张牌
51 * @constructor
52 */
53 function TypeReturn(type, mCard, ncards, pcards) {
54 this.handsType = type; // 手牌类型
55
56 this.maxCard = mCard; // 最大牌
57
58 this.nCards = ncards; // 组成牛的牌
59
60 this.pCards = pcards; // 决定点数的牌
61 }
62
63 /**
64 * 创建一副牌,牌面A-K
65 * 默认已经洗牌
66 * @return {Array}
67 */
68 function create1pairPoker(isShuffle) {
69 var cards = [];
70
71 for (var i = 1; i 5) return new TypeReturn(HandsType.TYPE_NONE, cardsArr[0], cardsArr, []);
120 sortBig2Samll(cardsArr);
121 var totalPoint = 0;
122 var realTotalPoint = 0;
123 var bigJ = true;
124 var big10 = true;
125
126 cardsArr.forEach((card)=>{
127 totalPoint += card.point |